package frsf.cidisi.exercise.modelo.util;


public class Celda  {
	private boolean paredNorte; //si es verdadero hay pared!
	private boolean paredSur;
	private boolean paredEste;
	private boolean paredOeste;
	private boolean salida;
	private boolean llave;
	private boolean cerrada;
	private boolean entrada;

	public Celda(Boolean paredNorte, Boolean paredSur, Boolean paredEste, Boolean paredOeste) {
		super();
		this.paredNorte = paredNorte;
		this.paredSur = paredSur;
		this.paredEste = paredEste;
		this.paredOeste = paredOeste;
		this.salida = Boolean.FALSE;
		this.llave = Boolean.FALSE;
		this.cerrada = Boolean.FALSE;
		this.entrada= Boolean.FALSE;
	}
	
	public void setParedNorte(Boolean paredNorte) {
		this.paredNorte = paredNorte;
	}
	public Boolean getParedNorte() {
		return paredNorte;
	}
	public void setParedSur(Boolean paredSur) {
		this.paredSur = paredSur;
	}
	public Boolean getParedSur() {
		return paredSur;
	}
	public void setParedEste(Boolean paredEste) {
		this.paredEste = paredEste;
	}
	public Boolean getParedEste() {
		return paredEste;
	}
	public void setParedOeste(Boolean paredOeste) {
		this.paredOeste = paredOeste;
	}
	public Boolean getParedOeste() {
		return paredOeste;
	}
	
	public boolean isSalida() {
		return salida;
	}

	public void setSalida(boolean salida) {
		this.salida = salida;
	}

	public boolean isEntrada() {
		return entrada;
	}

	public void setEntrada(boolean entrada) {
		this.entrada = entrada;
	}


	public boolean isCerrada() {
		return cerrada;
	}

	public void setCerrada(boolean cerrada) {
		this.cerrada = cerrada;
	}

	public boolean hasLlave() {
		return llave;
	}

	public void setLlave(boolean llave) {
		this.llave = llave;
	}
	@Override
	public String toString() {
		return "Norte:'" + paredNorte + "' Sur:'" + paredSur 
				+ "' Este:'" + paredEste + "' Oeste:'" + paredOeste + "'";
				
	}
	
	@Override
	public boolean equals(Object obj) {
		if(!(obj instanceof Celda))
			return false;
		
		Celda objC = (Celda) obj;
		
		if(! (this.cerrada == objC.isCerrada() && this.entrada == objC.isEntrada() && this.llave == objC.hasLlave()
				&& this.paredEste== objC.getParedEste() && this.paredNorte == objC.getParedNorte() && 
				this.paredOeste == objC.getParedOeste()	&& this.paredSur == objC.getParedSur() && this.salida == objC.isSalida()) )
			return false;
		
		return true;
	}
}
